import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
# 两个图像应该具有相同的大小和类型，或者第二个图像可以是标量值。

# 1. 读取图像
rain = cv.imread("image/rain.jpg")
view = cv.imread("image/view.jpg")

# 2. 图像相加
img1 = cv.add(rain, view) # cv中的加法，饱和加法，超过255就取255
img2 = rain + view # np中的加法，超过255后就对255取余，260 % 255 = 5

# 3. 图像显示
fig, axes = plt.subplots(nrows=1, ncols=2)
axes[0].imshow(img1[:, :, ::-1])
axes[0].set_title("cv中的加法")
axes[1].imshow(img2[:, :, ::-1])
axes[1].set_title("np中的加法")
plt.show()

# 4.图像混合
"""
这其实也是加法，但是不同的是两幅图像的权重不同，这就会给人一种混合或者透明的感觉。图像混合的计算公式如下：
g(x) = (1−α)f0(x) + αf1(x)
通过修改 α 的值（0 → 1），可以实现非常炫酷的混合。
现在我们把两幅图混合在一起。第一幅图的权重是0.7，第二幅图的权重是0.3。函数cv2.addWeighted()可以按下面的公式对图片进行混合操作。
dst = α⋅img1 + β⋅img2 + γ
这里γ取为零。
"""
img3 = cv.addWeighted(rain, 0.3, view, 0.7, 0)

# 5.图像显示
plt.imshow(img3[:, :, ::-1])
plt.show()